package cn.xeblog.plugin.game.landlords;

import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 玩家节点
 *
 * @author anlingyi
 * @date 2022/6/3 4:27 下午
 */
@Data
@NoArgsConstructor
public class PlayerNode {

  /**
   * 当前玩家名称
   */
  private String player;

  /**
   * 玩家别名
   */
  private String alias;

  /**
   * 手牌数量
   */
  private int pokerTotal;

  /**
   * 角色 1.农民 2.地主
   */
  private int role;

  /**
   * 前一位玩家
   */
  private PlayerNode prevPlayer;

  /**
   * 后一位玩家
   */
  private PlayerNode nextPlayer;

  /**
   * 构建玩家节点
   *
   * @param player 玩家名称
   */
  public PlayerNode(String player) {
    this.player = player;
  }

  /**
   * 对当前扑克总数减去指定的数量
   *
   * @param total 指定的数量
   * @return 减去后的扑克数量
   */
  public int minusPoker(int total) {
    this.pokerTotal -= Math.min(total, this.pokerTotal);
    return this.pokerTotal;
  }

  /**
   * 获取角色信息
   *
   * @return 角色字符串信息
   */
  public String getRoleInfo() {
    boolean isHard = LandlordsGame.isHard();
    String info = isHard ? "Free" : "待定";
    switch (this.role) {
      case 1:
        info = isHard ? "Slave" : "农民";
        break;
      case 2:
        info = isHard ? "Master" : "地主";
        break;
    }
    return info;
  }

  @Override
  public String toString() {
    return "PlayerNode{" +
        "player='" + player + '\'' +
        ", pokerTotal=" + pokerTotal +
        ", role=" + role +
        '}';
  }

}
